<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    /* Promise 的说明：
    1. Promise 是 构造函数
    2. new Promise，其参数 只有一个；是 回调函数 callback
    3. callback 有两个 形参，分别为 resolve  和  reject
    4. resolve 和 reject 都是 函数
    5. new Promise 会返回 Promise 的 实例对象
    */

    //三种状态
        // 1. pending - 等待状态
        // 2. fulfilled - 为调用了 resolve 函数， then（callback）调用了其回调函数，拿到数据
        // 3. reject - 为调用了 reject 函数， catch（callback）调用了其回调函数，拿到数据

    // p.then() 是 获取 resolve 的数据  异步 成功
    // p.catch() 是 获取 reject 的数据  异步 失败

    //解决的问题：回调地狱 -> 回调函数不断嵌套
        //解决方法：将回调函数的嵌套 改为 .then() 的 嵌套

    //异步 发生在 Promise() 实例对象内部

    //模拟 Promise 异步 成功/失败 发射 数据的例子
    const p = new Promise((resolve,reject) => {
        setTimeout(() => {
            const a = 'hellow world!'
            const b = 'hellow mack!'
            // resolve(a)
            reject(b)
        },2000)
    })
    // p.then(res => {
    //     console.log('then',res);
    // })
    p.catch(res => {
        console.log('catch',res);
    })
</script>